//路由拦截
import router from "./index.ts";
//@ts-ignore
import nprogress from "nprogress";
import "nprogress/nprogress.css";
nprogress.configure({ showSpinner: false })
import pinia from "../store/index.ts";
import useUserStore from "../store/modules/user.ts";
router.beforeEach(async (to, _from, next) => {
    const userStore = useUserStore(pinia);
    document.title = `AAAA- ${to.meta.title}`
  nprogress.start();
  //获取token判断用户是否登录
  const token = userStore.token;
  const username = userStore.userList.username;
//   if (token) {
//     if (to.path == "/login") {
//       next({ path: "/" });
//     } else {
//       if (username) {
//         //有用户信息放行
//         next();
//       } else {
//         try {
//           await userStore.userInfo();
//             next()
//         } catch (error) {
//           //token过期
//           await userStore.userLogOut();
//           next({ path: "login", query: { toPath: to.path } });
//         }
//       }
//     }
//     // next()
//   } else {
//     if (to.path == "/login") {
//       next();
//     } else {
//       next({ path: "login", query: { toPath: to.path } });
//     }
//   }
// if(token){
//     if(to.path == '/login'){
//         next({path:'/'})
//     }else{
//         if(username){
//             next()
//         }else{
//             try {
//                 await userStore.userInfo()
//                 next()
//             } catch (error) {
//                 userStore.userLogOut()
//                 next(`/login?toPath=${to.path}`)
//             }

//         }
//     }
// }else{
//     if(to.path=='/login'){
//         next()
//     }else{
//         next({path:'/login',query:{toPath:to.path}})
//     }
// }
  if (token) {
      //登录成功,访问login,不能访问,指向首页
      if (to.path == '/login') {
        next({ path: '/' })
      } else {
        //登录成功访问其余六个路由(登录排除)
        //有用户信息
        if (username) {
          //放行
          next()
        } else {
          //如果没有用户信息,在守卫这里发请求获取到了用户信息再放行
          try {
            //获取用户信息
            await userStore.userInfo()
            //放行
            //万一:刷新的时候是异步路由,有可能获取到用户信息、异步路由还没有加载完毕,出现空白的效果
            next({ ...to })
          } catch (error) {
            //token过期:获取不到用户信息了
            //用户手动修改本地存储token
            //退出登录->用户相关的数据清空
            await userStore.userLogOut()
            next({ path: '/login', query: { toPath: to.path } })
          }
        }
      }
    } else {
      //用户未登录判断
      if (to.path == '/login') {
        next()
      } else {
        next({ path: '/login', query: { toPath: to.path } })
      }
    }
});
router.afterEach((_to, _from) => {
  nprogress.done();
});
